package com.example.d_design;

public class Singleton01 {
//    不让外界随意调用进行new对象
    private Singleton01() {
        System.out.println("singleton01");
    }

//    懒汉式不着急调用new对象
    private static Singleton01 singleton1 = null;

//    但存在问题，可能有线程不安全性，可能thread1和thread2都进入到了new Singleton01的地方，导致产生多个，因此加上锁
    public static Singleton01 getSingleton() {
        synchronized (Singleton01.class) {
            if(singleton1 == null) {
                singleton1 = new Singleton01();
            }
        }

        return singleton1;
    }
}
